package com.dream.common.constans;

/**
 * 错误码定义类   define(code,msg)
 * <p>
 * 1000-1999  系统内部错误
 * 2000-2999 用户交互，前台展示错误
 * <p>
 * 按顺序申请，每个模块间隔保留100
 * <p>
 * <p>
 * 百度lbs错误码list 1--350
 * 0	成功
 * 1	服务器内部错误
 * 2	请求参数非法
 * 3	权限校验失败
 * 4	配额校验失败
 * 5	ak不存在或者非法
 * 101	服务襟用
 * 102	不通过白名単或者安全码不对
 * 202-205、210、233	无请求权限
 * 231	用户uid，ak不存在
 * 232	用户、ak被封襟
 * 233	sn签名计算错误
 * 210	权限资源不存在
 * 345	分钟配额超额
 * 346	月配额超额
 * 347	年配额超额
 * 348	永久配额超额无请求权限
 * 355	日配额超额
 * 350	配额资源不存在
 *
 * @author bs
 */
public enum ErrorCode {
    //警告注释
    get_ok(0, ""),
    page_not_found(404, "页面不存在"),
    service_exception(500, "系统内部错误"),  //系统返回错误
    network_exception(501, "网络错误"),  //
    login_exception(1001, "非法请求,请先登录!"),  //
    params_error(1002, "必填参数错误!"),


    business_error(9990,"常规业务错误"),

    //********************** 其他消息
    account_check_error(9991,"cloudnote-登录失败!"),
    not_find_data_error(9992,"未找到对应记录!"),
    not_find_config_error(9993,"未找到配置!"),
    code_overdue_error(9994,"充值码已过期"),
    code_disable_error(9996,"充值码无效"),
    code_freeze_error(9997,"充值码被冻结"),
    not_record_error(9998,"充值码不存在"),
    auth_error(9999,"非法请求"),
	unknow_error(10000,"未知错误");


    public int code;
    public String msg;

    private ErrorCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public static int getCode(String define) {
        return ErrorCode.valueOf(define).code;
    }

    public static String getMsg(String define) {
        return ErrorCode.valueOf(define).msg;

    }

    public static String getMsg(int code) {
        for (ErrorCode err : ErrorCode.values()) {
            if (err.code == code) {
                return err.msg;
            }
        }
        return "errorCode not defined ";
    }

    public static ErrorCode getErrorCodeByCode(int code) {
        for (ErrorCode err : ErrorCode.values()) {
            if (err.code == code) {
                return err;
            }
        }
        return null;
    }

    public static ErrorCode getErrorCode(int code, String msg) {
        for (ErrorCode err : ErrorCode.values()) {
            if (err.code == code) {
                err.msg = msg;
                return err;
            }
        }
        return null;
    }

}

